package com.qfmy.exception;


import common.exception.BaseException;
import common.result.Result;
import org.jetbrains.annotations.NotNull;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @author 清风明月
 * @Package com.lzw.breezeNovel.common.exception
 * @date 2025/5/17
 * @description 全局异常处理器类
 */

@RestControllerAdvice
@SuppressWarnings("all")
public class GlobalExceptionHandler {

      /**
       * 全局异常处理函数
       * 当控制器方法中出现任何异常时，此函数将被调用以处理异常。
       * @param e 抛出的异常对象
       * @return 包含错误信息的Result对象
       */
      @ExceptionHandler(Exception.class) // 异常处理器注解，指定处理的异常类型为Exception
      public Result handleException(@NotNull Exception e) {
       // 打印异常堆栈信息，用于调试
       e.printStackTrace();
       // 返回表示操作失败的Result对象
       return Result.fail();
      }

     /**
      * 全局异常处理函数，专门处理 BaseException 异常
      * 当控制器方法中出现 BaseException 异常时，此函数将被调用以处理该异常。
      * @param e 抛出的 BaseException 异常对象
      * @return 包含错误码和错误信息的 Result 对象
      */
     @ExceptionHandler(BaseException.class) // 异常处理器注解，指定处理的异常类型为 BaseException
     public Result handleLeaseException(@NotNull BaseException e) {
      // 打印异常堆栈信息，用于调试
      e.printStackTrace();
      // 返回包含错误码和错误信息的 Result 对象
      return Result.fail(e.getCode(), e.getMessage());
     }

}

